home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cocktail / ell.lha / ell / src / Types.mi < prev   
Text File  |  1992-08-18  |  1KB  |  64 lines

  1. (*
  2.  *    ell2 - a redesign of ell
  3.  *
  4.  *    $RCSfile: Types.mi,v $
  5.  *    
  6.  *    purpose:    distinguish terminals and nonterminals
  7.  *
  8.  *    $Author: grosch $
  9.  *    $Date: 1991/02/06 16:16:47 $
  10.  *)
  11.  
  12. IMPLEMENTATION MODULE Types;
  13.  
  14. FROM Idents    IMPORT    tIdent, MaxIdent;
  15. FROM Sets    IMPORT    tSet, MakeSet, IsElement, Include, Assign;
  16.  
  17. VAR vDefined, vTerms, vNonterms: tSet;
  18.  
  19. PROCEDURE BeginTypes    ;
  20.   BEGIN
  21.     MakeSet (vDefined, MaxIdent ());
  22.     MakeSet (vTerms, MaxIdent ());
  23.     MakeSet (vNonterms, MaxIdent ());
  24.   END BeginTypes;
  25.  
  26. PROCEDURE MakeTerm    (id: tIdent);
  27.   BEGIN
  28.     Include (vDefined, id);
  29.     Include (vTerms, id);
  30.   END MakeTerm;
  31.  
  32. PROCEDURE MakeNonterm    (id: tIdent);
  33.   BEGIN
  34.     Include (vDefined, id);
  35.     Include (vNonterms, id);
  36.   END MakeNonterm;
  37.  
  38. PROCEDURE IsDeclared    (id: tIdent): BOOLEAN;
  39.   BEGIN
  40.     RETURN IsElement (id, vDefined);
  41.   END IsDeclared;
  42.  
  43. PROCEDURE IsTerm    (id: tIdent): BOOLEAN;
  44.   BEGIN
  45.     RETURN IsElement (id, vTerms);
  46.   END IsTerm;
  47.  
  48. PROCEDURE IsNonterm    (id: tIdent): BOOLEAN;
  49.   BEGIN
  50.     RETURN IsElement (id, vNonterms);
  51.   END IsNonterm;
  52.  
  53. PROCEDURE Terminals    (VAR set: tSet);
  54.   BEGIN
  55.     Assign (set, vTerms);
  56.   END Terminals;
  57.  
  58. PROCEDURE Nonterminals    (VAR set: tSet);
  59.   BEGIN
  60.     Assign (set, vNonterms);
  61.   END Nonterminals;
  62.  
  63. END Types.
  64.